#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time    : 2021/5/13 02:11
# @Author  : Samge
"""
选择排序
"""
from utils import test_data
from utils.coast_time import coast_time


@coast_time
def selection_sort(arr, desc):
    """
    选择排序
        每次从【待选区】取最小值，插入【已选区】的末端
    :param arr: 要处理的列表
    :param desc: True-降序，False-升序
    :return: list 排序好的列表
    """
    if not arr:
        raise ValueError('参与排序的列表不能为空')
    max_size = len(arr)
    for i in range(max_size-1):
        min_index = i
        for j in range(i+1, max_size):
            if arr[j] < arr[min_index]:
                min_index = j
        if min_index != i:
            arr[min_index], arr[i] = arr[i], arr[min_index]
    if desc:
        arr.reverse()
    return arr


if __name__ == '__main__':
    test_lst = test_data.get_test_arr(10, shuffle=True, reverse=False)
    print(selection_sort(test_lst, desc=True))
    print(selection_sort(test_lst, desc=False))
